﻿public static class GlobalMembersGame_menubtn
{
	// ****************************************************************************
	// * Punch And Kick -- a simple 2D Fighting Game.
	// *
	// * Copyright (C) 2013 by
	// * Liu Chao
	// *
	// * This file is part of the Punch And Kick project, and may only be used,
	// * modified, and distributed under the terms of the GPLv2.
	// *
	// * (GPLv2 is abbreviation of GNU General Public License Version 2)
	// *
	// * By continuing to use, modify, or distribute this file you indicate that you
	// * have read the license and understand and accept it fully.
	// *
	// * The Punch And Kick project is distributed in the hope that it will be
	// * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 
	// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GPL v2 for
	// * more details.
	// *
	// * You should have received a copy of the GPLv2 along with this file. It is
	// * usually in the LICENSE.TXT file, If not, see <http://www.gnu.org/licenses/>.
	// * **************************************************************************

	// ****************************************************************************
	// * Punch And Kick -- 一个普通的2D格斗游戏
	// *
	// * 版权所有 (C) 2013 归属于
	// * 刘超
	// *
	// * 这个文件是 Punch And Kick 项目的一部分，并且只可以根据GPLv2许可协议来使用、
	// * 更改和发布。
	// *
	// * (GPLv2 是 GNU通用公共许可证第二版 的英文缩写)
	// *
	// * 继续使用、修改或发布本文件，表明您已经阅读并完全理解和接受这个许可协议。
	// *
	// * Punch And Kick 项目是基于技术交流目的而加以散布的，但不负任何担保责任，例
	// * 如：稳定性、可玩性、趣味性等的担保，甚至没有适销性或特定用途的隐含担保，详
	// * 情请参照GPLv2许可协议。
	// *
	// * 您应已收到附随于本文件的GPLv2许可协议的副本，它通常在LICENSE.TXT文件中，如果
	// * 没有，请查看：<http://www.gnu.org/licenses/>.
	// * **************************************************************************

	// 游戏菜单按钮


	// ****************************************************************************
	// * Punch And Kick -- a simple 2D Fighting Game.
	// *
	// * Copyright (C) 2013 by
	// * Liu Chao
	// *
	// * This file is part of the Punch And Kick project, and may only be used,
	// * modified, and distributed under the terms of the GPLv2.
	// *
	// * (GPLv2 is abbreviation of GNU General Public License Version 2)
	// *
	// * By continuing to use, modify, or distribute this file you indicate that you
	// * have read the license and understand and accept it fully.
	// *
	// * The Punch And Kick project is distributed in the hope that it will be
	// * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 
	// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GPL v2 for
	// * more details.
	// *
	// * You should have received a copy of the GPLv2 along with this file. It is
	// * usually in the LICENSE.TXT file, If not, see <http://www.gnu.org/licenses/>.
	// * **************************************************************************

	// ****************************************************************************
	// * Punch And Kick -- 一个普通的2D格斗游戏
	// *
	// * 版权所有 (C) 2013 归属于
	// * 刘超
	// *
	// * 这个文件是 Punch And Kick 项目的一部分，并且只可以根据GPLv2许可协议来使用、
	// * 更改和发布。
	// *
	// * (GPLv2 是 GNU通用公共许可证第二版 的英文缩写)
	// *
	// * 继续使用、修改或发布本文件，表明您已经阅读并完全理解和接受这个许可协议。
	// *
	// * Punch And Kick 项目是基于技术交流目的而加以散布的，但不负任何担保责任，例
	// * 如：稳定性、可玩性、趣味性等的担保，甚至没有适销性或特定用途的隐含担保，详
	// * 情请参照GPLv2许可协议。
	// *
	// * 您应已收到附随于本文件的GPLv2许可协议的副本，它通常在LICENSE.TXT文件中，如果
	// * 没有，请查看：<http://www.gnu.org/licenses/>.
	// * **************************************************************************

	// 游戏菜单按钮
	

//	public static void GameMenuBtn_SetFontSize(LCUI_Widget_ widget, int pixel_size)
//	{
//		GameMenuBtnData_ p_data;
//		_LCUI_TextStyle style = new _LCUI_TextStyle();

//		p_data = (GameMenuBtnData_)Widget_GetPrivData(widget);
//		style = Label_GetTextStyle(p_data.label);
//		TextStyle_FontSize(style, pixel_size);
//		TextStyle_FontColor(style, RGB(0,0,0));
//		Label_TextStyle(p_data.label, style);
//		ForeWidget_SetFontSize(p_data.fore_widget, pixel_size);
//	}

//	public static void GameMenuBtn_SetTextW(LCUI_Widget_ widget, char unicode_text)
//	{
//		GameMenuBtnData_ p_data;
//		p_data = (GameMenuBtnData_)Widget_GetPrivData(widget);
//		Label_TextW(p_data.label, unicode_text);
//		ForeWidget_SetTextW(p_data.fore_widget, unicode_text);
//	}

//	public static void GameMenuBtn_SetForeWidgetColor(LCUI_Widget_ widget, LCUI_RGB_ color)
//	{
//		GameMenuBtnData_ p_data;
//		p_data = (GameMenuBtnData_)Widget_GetPrivData(widget);
////C++ TO C# CONVERTER WARNING: The following line was determined to be a copy assignment (rather than a reference assignment) - this should be verified and a 'CopyFrom' method should be created if it does not yet exist:
////ORIGINAL LINE: p_data->color = color;
//		p_data.color.CopyFrom(color);
//		Widget_SetBackgroundColor(p_data.fore_widget, color);
//		Widget_SetBackgroundTransparent(p_data.fore_widget, DefineConstantsGame_menubtn.FALSE);
//	}

//	public static LCUI_Widget_ GameMenuBtn_New()
//	{
//		return Widget_New(DefineConstantsGame_menubtn.WIDGET_TYPE_GAME_MENU_BUTTON);
//	}

//	public static void GameMenuBtn_Register()
//	{
//		WidgetType_Add(DefineConstantsGame_menubtn.WIDGET_TYPE_GAME_MENU_BUTTON);
//		WidgetType_Add(DefineConstantsGame_menubtn.FORE_WIDGET_TYPE_NAME);
//		WidgetFunc_Add(DefineConstantsGame_menubtn.WIDGET_TYPE_GAME_MENU_BUTTON, GameMenuBtn_ExecInit, FuncType_.FUNC_TYPE_INIT);
//		WidgetFunc_Add(DefineConstantsGame_menubtn.WIDGET_TYPE_GAME_MENU_BUTTON, GameMenuBtn_ExecUpdate, FuncType_.FUNC_TYPE_UPDATE);
//		WidgetFunc_Add(DefineConstantsGame_menubtn.WIDGET_TYPE_GAME_MENU_BUTTON, GameMenuBtn_ExecDraw, FuncType_.FUNC_TYPE_DRAW);
//		WidgetFunc_Add(DefineConstantsGame_menubtn.FORE_WIDGET_TYPE_NAME, ForeWidget_ExecInit, FuncType_.FUNC_TYPE_INIT);
//	}

//	//#endif

//	internal static void ForeWidget_ExecInit(LCUI_Widget_ widget)
//	{
//		ForeWidgetData_ p_data;
//		_LCUI_TextStyle style = new _LCUI_TextStyle();

//		p_data = (ForeWidgetData_)Widget_NewPrivData(widget, typeof(ForeWidgetData_));
//		p_data.label = Widget_New("label");
//		Widget_Container_Add(widget, p_data.label);
//		Widget_SetAlign(p_data.label, ALIGN_TYPE_.ALIGN_MIDDLE_LEFT, Pos(35,0));
//		style = Label_GetTextStyle(p_data.label);
//		TextStyle_FontColor(style, RGB(255,255,255));
//		Label_TextStyle(p_data.label, style);
//		Widget_Show(p_data.label);
//	}

//	internal static void ForeWidget_SetFontSize(LCUI_Widget_ widget, int pixel_size)
//	{
//		ForeWidgetData_ p_data;
//		_LCUI_TextStyle style = new _LCUI_TextStyle();

//		p_data = (ForeWidgetData_)Widget_GetPrivData(widget);
//		style = Label_GetTextStyle(p_data.label);
//		TextStyle_FontColor(style, RGB(255,255,255));
//		TextStyle_FontSize(style, pixel_size);
//		Label_TextStyle(p_data.label, style);
//	}

//	internal static void ForeWidget_SetTextW(LCUI_Widget_ widget, char unicode_text)
//	{
//		ForeWidgetData_ p_data;
//		p_data = (ForeWidgetData_)Widget_GetPrivData(widget);
//		Label_TextW(p_data.label, unicode_text);
//	}

//	internal static void GameMenuBtn_UpdateForeWidgetWidth(IntPtr arg)
//	{
//		int width;
//		string width_str = new string(new char[20]);
//		LCUI_Widget_ widget;
//		GameMenuBtnData_ p_data;

//		widget = (LCUI_Widget_)arg;
//		p_data = (GameMenuBtnData_)Widget_GetPrivData(widget);
//		if(p_data.need_fill_fore)
//		{
//			width = Widget_GetWidth(widget);
//			// 如果已经达到预定宽度，则不再调整宽度 
//			if(p_data.fore_widget_width == width)
//			{
//				return;
//			}
//			p_data.fore_widget_width += width/10;
//			if(p_data.fore_widget_width > width)
//			{
//				p_data.fore_widget_width = width;
//			}
//			width_str = string.Format("{0:D}px", p_data.fore_widget_width);
//			Widget_SetSize(p_data.fore_widget, width_str, "100%");
//			return;
//		}
//		if(p_data.fore_widget_width == 3)
//		{
//			return;
//		}
//		if(p_data.fore_widget_width > 3)
//		{
//			width = Widget_GetWidth(widget);
//			p_data.fore_widget_width -= width/10;
//		}
//		if(p_data.fore_widget_width < 3)
//		{
//			p_data.fore_widget_width = 3;
//		}
//		width_str = string.Format("{0:D}px", p_data.fore_widget_width);
//		Widget_SetSize(p_data.fore_widget, width_str, "100%");
//	}

//	private static void GameMenuBtn_OnFocusEvent( LCUI_Widget_ *widget, LCUI_WidgetEvent *event)
//	{
//		Widget_Update(widget);
//	}

//	internal static void GameMenuBtn_ExecInit(LCUI_Widget_ widget)
//	{
//		int valid_state;
//		GameMenuBtnData_ p_data;

//		p_data = (GameMenuBtnData_)Widget_NewPrivData(widget, typeof(GameMenuBtnData_));

//		valid_state = WIDGET_STATE_.WIDGET_STATE_ACTIVE | WIDGET_STATE_.WIDGET_STATE_OVERLAY;
//		valid_state |= WIDGET_STATE_.WIDGET_STATE_NORMAL;

//		p_data.fore_widget = Widget_New(DefineConstantsGame_menubtn.FORE_WIDGET_TYPE_NAME);
//		p_data.label = Widget_New("label");
//		p_data.need_fill_fore = DefineConstantsGame_menubtn.FALSE;
//		p_data.fore_widget_width = 3;

//		Widget_Container_Add(widget, p_data.label);
//		Widget_Container_Add(widget, p_data.fore_widget);
//		Widget_SetAlign(p_data.label, ALIGN_TYPE_.ALIGN_MIDDLE_LEFT, Pos(35,0));
//		Widget_SetAlign(p_data.fore_widget, ALIGN_TYPE_.ALIGN_MIDDLE_LEFT, Pos(0,0));
//		Widget_SetSize(p_data.fore_widget, "3px", "100%");
//		Widget_SetValidState(widget, valid_state);

//		Widget_Show(p_data.label);
//		Widget_Show(p_data.fore_widget);

//		Widget_SetBackgroundColor(widget, RGB(255,255,255));
//		Widget_SetBackgroundTransparent(widget, DefineConstantsGame_menubtn.FALSE);
//		Widget_SetBorder(widget, Border(1,BORDER_STYLE_SOLID,RGB(220,220,220)));
//		Widget_SetPadding(widget, Padding(1,1,1,1));

//		Widget_ConnectEvent(widget, EVENT_FOCUSIN, GameMenuBtn_OnFocusEvent);
//		Widget_ConnectEvent(widget, EVENT_FOCUSOUT, GameMenuBtn_OnFocusEvent);
//		// 设置定时器，用于动态更新前景部件的宽度 
//		p_data.timer_id = LCUITimer_Set(20, GameMenuBtn_UpdateForeWidgetWidth, widget, DefineConstantsGame_menubtn.TRUE);
//	}

//	internal static void GameMenuBtn_ExecDraw(LCUI_Widget_ widget)
//	{
//		LCUI_Graph_ graph;
//		graph = Widget_GetSelfGraph(widget);
//		Graph_FillAlpha(graph, 150);
//	}

//	internal static void GameMenuBtn_ExecUpdate(LCUI_Widget_ widget)
//	{
//		GameMenuBtnData_ p_data;
//		LCUI_RGB_ color = new LCUI_RGB_();

//		p_data = (GameMenuBtnData_)Widget_GetPrivData(widget);
//		switch(widget.state)
//		{
//		case WIDGET_STATE_.WIDGET_STATE_NORMAL:
//			if(Widget_GetFocus(widget))
//			{
//				p_data.need_fill_fore = DefineConstantsGame_menubtn.TRUE;
//				Widget_SetBackgroundColor(p_data.fore_widget, p_data.color);
//				break;
//			}
//			p_data.need_fill_fore = DefineConstantsGame_menubtn.FALSE;
//			Widget_SetBackgroundColor(p_data.fore_widget, p_data.color);
//			break;
//		case WIDGET_STATE_.WIDGET_STATE_OVERLAY:
//			p_data.need_fill_fore = DefineConstantsGame_menubtn.TRUE;
//			Widget_SetBackgroundColor(p_data.fore_widget, p_data.color);
//			break;
//		case WIDGET_STATE_.WIDGET_STATE_ACTIVE:
//			p_data.need_fill_fore = DefineConstantsGame_menubtn.TRUE;
//			p_data.fore_widget_width = Widget_GetWidth(widget);
//			// 让前景部件长度直接达到最大 
//			Widget_SetSize(p_data.fore_widget, "100%", "100%");
//			// 让背景色变暗 
//			color.red = (int)(p_data.color.red * 0.7);
//			color.green = (int)(p_data.color.green * 0.7);
//			color.blue = (int)(p_data.color.blue * 0.7);
//			Widget_SetBackgroundColor(p_data.fore_widget, color);
////C++ TO C# CONVERTER TODO TASK: C# does not allow fall-through from a non-empty 'case':
//		default:
//			break;
//		}
//		Widget_Draw(p_data.fore_widget);
//	}
}




//* 游戏菜单按钮的前景部件数据 
public class ForeWidgetData_
{
	public LCUI_Widget_ label;
}

//* 游戏菜单按钮数据 
public class GameMenuBtnData_
{
	public LCUI_BOOL need_fill_fore = new LCUI_BOOL();
	public int timer_id;
	public int fore_widget_width;
	public LCUI_RGB_ color = new LCUI_RGB_();
	public LCUI_Widget_ fore_widget;
	public LCUI_Widget_ label;
}
